home *** CD-ROM | disk | FTP | other *** search
/ The Best of MacTutor - S…e Code for Volumes 1 to 5 / The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin / Source Code / #18 (Mar 87) / Fortran Runge-Kutta / Fortran Benchmark.text < prev    next >
Text File  |  1987-01-29  |  969b  |  54 lines

  1.     INTEGER ORDER
  2.     DIMENSION X(6),XOLD(6),XD(6)
  3.          DATA B1,B2,B3,B4,B5,B6,W0/3.86,7.46,9.13,7.46,3.86,1.,50./
  4.     DATA XIN/1./
  5.     ORDER=6
  6.     W02=W0*W0
  7.     W03=W02*W0
  8.     W04=W03*W0
  9.     W05=W04*W0
  10.     W06=W05*W0
  11.     DO 10 I=1,ORDER
  12.     X(I)=0.
  13.  10    CONTINUE
  14.      T=0.
  15.     H=.0001
  16.     S=0.
  17.  5    IF(T.GE..5)GOTO 999
  18.     S=S+H
  19.     DO 20 I=1,ORDER
  20.     XOLD(I)=X(I)
  21.  20    CONTINUE
  22.     CALL INTEG(T,XD,X,W02,W03,W04,W05,W06)
  23.      DO 30 I=1,ORDER
  24.     X(I)=X(I)+H*XD(I)
  25.  30    CONTINUE
  26.      T=T+H
  27.     CALL INTEG(T,XD,X,W02,W03,W04,W05,W06)
  28.      DO 40 I=1,ORDER
  29.      X(I)=(XOLD(I)+X(I))/2.+.5*H*XD(I)
  30.  40    CONTINUE
  31.      IF(S.GE..004999)THEN
  32.     S=0.
  33.     WRITE(9,*)T,X(1)
  34.     ELSE
  35.     END IF
  36.     GOTO 5
  37.  999    CONTINUE
  38.     END
  39.     SUBROUTINE INTEG(T,XD,X,W02,W03,W04,W05,W06)
  40.     SAVE
  41.     INTEGER ORDER
  42.     DIMENSION X(6),XOLD(6),XD(6)
  43.          DATA B1,B2,B3,B4,B5,B6,W0/3.86,7.46,9.13,7.46,3.86,1.,50./
  44.     DATA XIN/1./
  45.     ORDER=6
  46.      XD(1)=X(2)
  47.     XD(2)=X(3)
  48.     XD(3)=X(4)
  49.     XD(4)=X(5)
  50.     XD(5)=X(6)
  51.     XD(6)=W06*(XIN-B5*X(6)/W05-B4*X(5)/W04-B3*X(4)/W03
  52.      +-B2*X(3)/W02-B1*X(2)/W0-X(1))/B6
  53.     RETURN
  54.     END